#pragma once
#include "util/Singleton.h"
#include "Vector3.h"
#include "Types.h"



namespace Boon
{
	/*!
	* Storing all relevant configuration properties for Boon-Engine
	*/
	class BOON_API ConfigurationManager : public Singleton<ConfigurationManager>
	{
		SINGLETON( ConfigurationManager )

		virtual void					OnInitialize();
		virtual void					OnDestroy();

	public:
		inline float					GetDeltaTimeSmoothingFactor() const { return m_DtSmoothingFactor; }
		inline float					GetDeltaTimeRenderingSmoothingFactor() const { return m_DtRenderingSmoothingFactor; }
		inline float					GetFPSRendering() const { return m_FPSRendering; }
		inline float					GetFPSPhysics() const { return m_FPSPhysics; }
		inline bool						IsTestingMode() const { return m_IsTestingMode; }
		inline const Vector3&			GetGravity() const { return m_Gravity; }
		inline uint_32					GetPhysicsCpuDispatcherThreads() const { return m_PhysicsCpuDispatcherThreads; }
		inline uint_32					GetPhysicsMaxSubsteps() const { return m_PhysicsMaxSubsteps; }
	private:
		float					m_DtSmoothingFactor;
		float					m_DtRenderingSmoothingFactor;
		float					m_FPSRendering;
		float					m_FPSPhysics;
		bool					m_IsTestingMode;
		Vector3					m_Gravity;
		uint_32					m_PhysicsCpuDispatcherThreads;
		uint_32					m_PhysicsMaxSubsteps;
	};

}
